×èñëîâûå ôóíêöèè

Âñå ÷èñëîâûå ôóíêöèè ARexx-a (çà èñêëþ÷åíèåì HASH()) îïåðèðóþò èñêëþ÷èòåëüíî ñ äåñÿòè÷íûìè ÷èñëàìè. Êàê àðãóìåíòû ôóíêöèé, òàê è âîçâðàùàåìûå èìè ðåçóëüòàòû ïîäïàäàþò ïîä äåéñòâèå òåêóùåé óñòàíîâêè NUMERIC DIGITS (ñì. ñîîòâåòñòâóþùåå îïèñàíèå).


ABS()
res = ABS(<÷èñëî>)

Âîçâðàùàåò àáñîëþòíîå çíà÷åíèå ÷èñëà.


HASH()
res = HASH(<ñòðîêà>)

Âîçâðàùàåò äåñÿòè÷íîå ÷èñëî - êýø-àòðèáóò ñòðîêè. Êýø-àòðèáóò ÿâëÿåòñÿ íåêîòîðûì àññîöèèðîâàííûì ñ çàäàííîé ñòðîêîé ÷èñëîì, êîòîðîå ÷àñòî èñïîëüçóåòñÿ â êà÷åñòâå èíäåêñà ïðè ïîèñêå ñòðîê â ðàçëè÷íûõ ñòðóêòóðàõ äàííûõ. Êýø-àòðèáóò âû÷èñëÿåòñÿ èñõîäÿ èç ñîäåðæèìîãî ñòðîêè è ïîýòîìó, â ïðèíöèïå, ðàçíûå ñòðîêè äîëæíû èìåòü ðàçëè÷íûå çíà÷åíèÿ êýø-àòðèáóòîâ. Ñïîñîá âû÷èñëåíèÿ êýø-àòðèáóòà â ARexx-e çàêëþ÷àåòñÿ â ñëîæåíèè âñåõ ASCII-çíà÷åíèé ëèòåð ñòðîêè, à çàòåì íàõîæäåíèè îñòàòêà îò äåëåíèÿ ïîëó÷åííîé ñóììû íà 256 (ò.å. èñïîëüçóåòñÿ òîëüêî ìëàäøèé áàéò ñóììû). Àëãîðèòìû âû÷èñëåíèÿ êýø-àòðèáóòîâ, âîîáùå ãîâîðÿ, ïîñòîÿííî áàëàíñèðóþò ìåæäó ñòåïåíüþ "óíèêàëüíîñòè" ïîëó÷åííîãî çíà÷åíèÿ è ñêîðîñòüþ åãî âû÷èñëåíèÿ. Ïðèìåð:

say HASH('Íåóæòî óíèêàëüíîå çíà÷åíèå?')   ==>  89

MAX()
res = MAX(<÷èñëî>,<÷èñëî>[,<÷èñëî>][...])

Ðåçóëüòàò ðàâåí íàèáîëüøåìó èç àðãóìåíòîâ.


MIN()
res = MAX(<÷èñëî>,<÷èñëî>[,<÷èñëî>][...])

Ðåçóëüòàò ðàâåí íàèìåíüøåìó èç àðãóìåíòîâ.


RANDOM()
res = RANDOM([<ìèíèìóì>,][<ìàêñèìóì>,][<ñòàðò>])

Ðåçóëüòàòîì ÿâëÿåòñÿ öåëîå íåîòðèöàòåëüíîå ïñåâäîñëó÷àéíîå ÷èñëî. Åñëè íå óêàçàíî ìèíèìàëüíîå çíà÷åíèå, òî íàèìåíüøèì ðåçóëüòàòîì ìîæåò áûòü íîëü. Åñëè íå óêàçàíî ìàêñèìàëüíîå çíà÷åíèå, òî îíî ïðèíèìàåòñÿ ðàâíûì 999. Åñëè óêàçàíî òîëüêî îäíî ÷èñëî â êà÷åñòâå àðãóìåíòà, òî ñ÷èòàåòñÿ, ÷òî ýòî - ïàðàìåòð "ìàêñèìóì", ò.å. ðåçóëüòàò ðàáîòû ôóíêöèè íå ìîæåò ïðåâûñèòü ýòî çíà÷åíèå. Åñëè óêàçàí öåëî÷èñëåííûé ïàðàìåòð "ñòàðò", òî îí ñ÷èòàåòñÿ îòïðàâíîé òî÷êîé äëÿ ðàñ÷åòà çíà÷åíèé î÷åðåäíîé ïñåâäîñëó÷àéíîé ïîñëåäîâàòåëüíîñòè (ïîëåçíî, íàïðèìåð, ïðè îòëàäêå ïðîãðàììû, êîãäà íóæíû ïðåäñêàçóåìûå ðåçóëüòàòû).

Åñëè íåîáõîäèìî, ÷òîáû êàæäûé âûçîâ RANDOM() âîçâðàùàë ñëåäóþùåå çíà÷åíèå èç ïñåâäîñëó÷àéíîé ïîñëåäîâàòåëüíîñòè, òî íåîáõîäèìî ïî êðàéíåé ìåðå îäíàæäû èñïîëíèòü â âàøåé ïðîãðàììå RANDOM() ñ ïàðàìåòðîì "ñòàðò".  ïðîòèâíîì ñëó÷àå äëÿ îäíèõ è òåõ æå çíà÷åíèé ìèíèìóìà è ìàêñèìóìà áóäóò âñåãäà âîçâðàùàòüñÿ îäíè è òå æå ÷èñëà. Îáû÷íî â êà÷åñòâå ïàðàìåòðà "ñòàðò" áåðåòñÿ ðåçóëüòàò ðàáîòû ôóíêöèè ÒIÌÅ(), êîòîðûé ñàì ïî ñåáå äîñòàòî÷íî ñëó÷àåí, ò.å. ãäå-íèáóäü â íà÷àëå ïðîãðàììû íàäî èñïîëíèòü:

RANDOM(,, TIME())

à çàòåì ìîæíî ñïîêîéíî ïîëüçîâàòüñÿ RANDOM() äëÿ ïîëó÷åíèÿ ñëó÷àéíûõ ÷èñåë (ðàçóìååòñÿ, íå çàäàâàÿ ïàðàìåòð "ñòàðò").


RANDU()
res = RANDU([<ñòàðò>])

Ðåçóëüòàòîì ÿâëÿåòñÿ ñëó÷àéíîå ÷èñëî â äèàïàçîíå ìåæäó íóëåì è åäèíèöåé. Èíèöèàëèçàöèÿ ïñåâäîñëó÷àéíîé ïîñëåäîâàòåëüíîñòè ïðîèñõîäèò òàê æå, êàê è ó ôóíêöèè RANDOM().


SIGN()
res = SIGN([<÷èñëî>])
Ôóíêöèÿ âîçâðàùàåò  -1, åñëè "÷èñëî" îòðèöàòåëüíîå;
                     0, åñëè "÷èñëî" ðàâíî íóëþ;
                     1, åñëè "÷èñëî" ïîëîæèòåëüíîå

TRUNC()
res = TRUNC(<÷èñëî>[,<äëèíà>])

Ôóíêöèÿ ôîðìàòèðóåò äðîáíóþ ÷àñòü ÷èñëà, ïîäãîíÿÿ ÷èñëî åå öèôð â ñîîòâåòñòâèè ñ ïàðàìåòðîì "äëèíà". Åñëè "äëèíà" îòñóòñòâóåò, òî äðîáíàÿ ÷àñòü îòáðàñûâàåòñÿ. Îêðóãëåíèå ïðè ôîðìàòèðîâàíèè íå ïðîèçâîäèòñÿ - åñëè "äëèíà" ìåíüøå, ÷åì ÷èñëî äåñÿòè÷íûõ öèôð â äðîáíîé ÷àñòè, òî ëèøíèå öèôðû ïðîñòî îòáðàñûâàþòñÿ. Åñëè "äëèíà" áîëüøå, ÷åì ÷èñëî äåñÿòè÷íûõ öèôð â äðîáíîé ÷àñòè, òî äðîáíàÿ ÷àñòü äîïîëíÿåòñÿ ñïðàâà íåîáõîäèìûì êîëè÷åñòâîì íóëåé. Ïðèìåðû:

say TRUNC(10.1234)      ==>  10
say TRUNC(10.1234, 2)   ==>  10.12 
say TRUNC(10.1234, 6)   ==>  10.123400